package com.lh.tams.dao;

import java.util.ArrayList;
import java.util.List;

import org.springframework.stereotype.Repository;

import com.lh.tams.controller.qo.CaseQo;
import com.lh.tams.dao.base.HibernateBaseDao;
import com.lh.tams.domain.TamsRecord;
import com.lh.tams.util.DataGridModel;
import com.lh.tams.util.Page;
import com.lh.tams.util.Status;
/**
 * 归档处理dao
 * @author liulin
 *
 */
@Repository
public class RecordDao extends HibernateBaseDao{
	@SuppressWarnings("unchecked")
	public TamsRecord getCaseRecordByNo(String caseNo){
		List<Object> args=new ArrayList<Object>();
		StringBuilder hql=new StringBuilder();
		hql.append("from TamsRecord t where t.caseNo=?");
		args.add(caseNo);
		Page page = super.queryForList(hql.toString(), args.toArray(), 1, 100);
		List<TamsRecord> lists = (List<TamsRecord>)page.getRows();
		if(lists.size()<1)
		{
			return null;
		}		
		return lists.get(0);
	}
	
	public Page query(DataGridModel dgm,CaseQo caseQo,long personId){
		List<Object> args=new ArrayList<Object>();
		StringBuilder sql = new StringBuilder();
		sql.append("select distinct c.* from tams_record c left join tams_case tc on c.case_id=tc.id_bgt left join " +
				"tams_party p on tc.case_no=p.case_no where 1=1");
		if(caseQo.getPartyNo()!=null&&!"".equals(caseQo.getPartyNo())){
			sql.append(" and p.identity_no=?");
			args.add(caseQo.getPartyNo());
		}
		if(caseQo.getPartyName()!=null&&!"".equals(caseQo.getPartyName())){
			sql.append(" and p.party_name=?");
			args.add(caseQo.getPartyName());
		}
		if(personId>0){
			sql.append(" and c.person=?");
			args.add(personId);
		}
		if(caseQo.getCaseNo()!=null&&!"".equals(caseQo.getCaseNo())){
			sql.append(" and c.case_no like ?");
			args.add("%"+caseQo.getCaseNo()+"%");
		}
		if(caseQo.getOutDept()>0){
			sql.append(" and tc.out_dept=?");
			args.add(caseQo.getOutDept());
		}
		if(caseQo.getOutPerson()>0){
			sql.append(" and tc.out_person=?");
			args.add(caseQo.getOutPerson());
		}
		if(caseQo.getAlarmName()!=null&&!"".equals(caseQo.getAlarmName())){
			sql.append(" and tc.alarm_name like ?");
			args.add("%"+caseQo.getAlarmName()+"%");
		}
		sql.append(" and c.is_finish=?");
		if(caseQo.getIsFinish()!=Status.IS_FINISH_YES){
			args.add(Status.IS_FINISH_NO);
		}else{
			args.add(Status.IS_FINISH_YES);
		}
		sql.append("  order by c.case_no desc");
		return super.queryForArray(sql.toString(), args.toArray(), dgm.getPage(), dgm.getRows());
	}
}
